package agentes09.agentes;

import agentes09.negotiation.behaviours.NegociacionGasolinera;
import agentes09.negotiation.behaviours.PruebaGasolinera;
import jade.core.Agent;
import jade.domain.DFService;
import jade.domain.FIPAException;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription;

public class AgenteGasolinera extends AgenteConEstado{
	
	 protected void setup() {
	        super.setup();
	        registrarEnDF();
            System.out.println("El agente "+ getAID().getName()  + "  esta preparado");
	        addBehaviour(new NegociacionGasolinera());       
	        try{            
	            Thread.sleep(20000);
	        }catch(InterruptedException ex){
	            ex.printStackTrace();
	        }
	        addBehaviour(new PruebaGasolinera());
	    }


	    /**
	     * Este metodo registra al agente gasolinera en el DF
	     */
	    private void registrarEnDF() {
	        DFAgentDescription dfd = new DFAgentDescription();
	        dfd.setName(getAID());
	        ServiceDescription sd = new ServiceDescription();
	        sd.setType("gasolinera");
	        sd.setName(getLocalName());
	        dfd.addServices(sd);
	        try {
	            DFService.register(this, dfd);
	        } catch (FIPAException fe) {
	            fe.printStackTrace();
	        }
	    }
	    
	    // Terminar el agente
	    protected void takeDown() {
	       try { 
	           DFService.deregister(this);
	       } catch (FIPAException fe) {
	           fe.printStackTrace();
	       }
	       System.out.println("El agente "+getAID().getName()+" ha terminado");
	    }


}
